<?php

namespace Admin\Controller;
use Component\AdminController;

//角色控制器
class RoleController extends AdminController{

    //显示角色列表
    function showlist(){
        $role=D("Role");
        $total = $role->count();
        $per = 10;
        $page = new \Component\Page($total, $per);
        $sql = "select * from sw_role ";
        $sql=$sql. $page->limit;
        $info = $role->query($sql);
        $pagelist = $page->fpage();
        $this->assign('pagelist', $pagelist);
        $this -> assign('info',$info);
        $this -> display();
    }

    //添加角色
    function add_role(){
        $role = D("Role");
        if (!empty($_POST)) {
            if(trim($_POST['role_name'])!="") {
                $role->create(); //收集post表单数据
                $z = $role->add();
                if ($z) {
                    $this->redirect("showlist");
                } else {
                    $this->assign("error", "添加失败，此角色是否已存在？");
                }
            }else{
                $this->assign("error","添加失败，存在输入为空");
            }
        }
        $this->display();
    }

    //删除角色
    function del_role($role_id){
        $role = D("Role");
        $rst = $role->delete($role_id);
        if ($rst > 0) {
            $this -> redirect('showlist');
        } else {
            $this -> redirect('showlist',"角色删除失败,请稍后再试");
        }
    }

    //分配权限
    function distribute($role_id){
        if(!empty($_POST)){
            //利用RoleModel模型里边的一个专门方法实现权限分配
            $role = new \Model\RoleModel();
            //saveAuth接收到一维数组信息
            $z = $role -> saveAuth($_POST['authname'], $role_id);
            if($z){
                $this -> redirect('showlist');
            } else {
                $this -> redirect('showlist');
            }
        } else {
            //根据$role_id查询对应的角色名字
            $rinfo = D("Role")->getByRole_id($role_id);
            $this -> assign('role_name', $rinfo['role_name']);

            //查询全部的权限信息，放入模板显示并进行权限分配
            $pauth_info = D('Auth')->where('auth_level=0')->select(); //父级权限
            $sauth_info = D('Auth')->where('auth_level=1')->select(); //次父级权限
            $tauth_info = D('Auth')->where('auth_level=2')->select(); //次次父级权限

            //把当前角色对应的权限信息给查询出来
            $authinfo = D("Role")->getByRole_id($role_id);
            $auth_ids_arr = explode(',',$authinfo['role_auth_ids']); //数组auth_id 信息

            $this -> assign('auth_ids_arr', $auth_ids_arr);
            $this -> assign('pauth_info',$pauth_info);
            $this -> assign('sauth_info',$sauth_info);
            $this -> assign('tauth_info',$tauth_info);

            $this -> display();
        }
    }

}

